package mh.entity;

import java.util.List;

import mh.entity.object.EntityObject;

/**
 * Defines if a particular object (Furniture) can contain other <code>EntityObject</code>s
 * 
 * @author Gianmarco Laggia
 * @author Alberto D'Este
 * 
 */
public interface IContainer {

	/**
	 * @return True if the container is empty.
	 */
	public boolean isEmpty();

	/**
	 * @return True if there isn't more free space to put another object.
	 */
	public boolean isFull();

	/**
	 * Inserts an object in this container
	 * 
	 * @param obj
	 *            The object to be inserted
	 */
	public void putIn(EntityObject obj);

	/**
	 * Remove a specific object from this container
	 * 
	 * @param obj
	 *            The object that has to be removed
	 */
	public void removeFrom(EntityObject obj);

	/**
	 * @return A list of all the object inside this container. This list is a copy of the one inside this object so you
	 *         can't work on it to change this object behavior.
	 */
	public List<EntityObject> getAll();
}
